connect(AccountManager::instance(), &AccountManager::accountAdded,
this, [this]{ showWindow(WindowPosition::Center); });
#endif
+
+ connect(FolderMan::instance(), &FolderMan::folderListChanged, this, &Systray::slotSyncFoldersChanged);
+ slotSyncFoldersChanged(FolderMan::instance()->map());
}
void Systray::create()
setPauseOnAllFoldersHelper(true);
}
+void Systray::slotSyncFoldersChanged(const OCC::Folder::Map &folderMap)
+{
+ if (const auto currentAnySyncFolders = !folderMap.isEmpty(); currentAnySyncFolders != _anySyncFolders) {
+ _anySyncFolders = currentAnySyncFolders;
+ emit anySyncFoldersChanged();
+ }
+}
+
void Systray::setPauseOnAllFoldersHelper(bool pause)
{
// For some reason we get the raw pointer from Folder::accountState()
emit syncIsPausedChanged();
}
+bool Systray::anySyncFolders() const
+{
+ return _anySyncFolders;
+}
+
/********************************************************************************************/
/* Helper functions for cross-platform tray icon position and taskbar orientation detection */
/********************************************************************************************/
Q_PROPERTY(QString windowTitle READ windowTitle CONSTANT)
Q_PROPERTY(bool useNormalWindow READ useNormalWindow CONSTANT)
Q_PROPERTY(bool syncIsPaused READ syncIsPaused WRITE setSyncIsPaused NOTIFY syncIsPausedChanged)
+ Q_PROPERTY(bool anySyncFolders READ anySyncFolders NOTIFY anySyncFoldersChanged)
Q_PROPERTY(bool isOpen READ isOpen WRITE setIsOpen NOTIFY isOpenChanged)
Q_PROPERTY(bool enableAddAccount READ enableAddAccount CONSTANT)
Q_REQUIRED_RESULT bool useNormalWindow() const;
Q_REQUIRED_RESULT bool syncIsPaused() const;
+ Q_REQUIRED_RESULT bool anySyncFolders() const;
Q_REQUIRED_RESULT bool isOpen() const;
[[nodiscard]] bool enableAddAccount() const;
void showErrorMessageDialog(const QString &error);
void syncIsPausedChanged();
+ void anySyncFoldersChanged();
void isOpenChanged();
void hideSettingsDialog();
void slotUpdateSyncPausedState();
void slotUnpauseAllFolders();
void slotPauseAllFolders();
+ void slotSyncFoldersChanged(const OCC::Folder::Map &foldeMap);
private:
// Argument allows user to specify a specific dialog to be raised
bool _isOpen = false;
bool _syncIsPaused = true;
+ bool _anySyncFolders = false;
+
std::unique_ptr<QQmlApplicationEngine> _trayEngine;
QPointer<QMenu> _contextMenu;
QSharedPointer<QQuickWindow> _trayWindow;